Web Share Target APIã解説ããŸããWebã¢ããªã±ãŒã·ã§ã³ãå ±æã¿ãŒã²ãããšããŠç»é²ãããã©ãããã©ãŒã ãæšªæããŠãŠãŒã¶ãŒäœéšãšã¢ããªãšã³ã²ãŒãžã¡ã³ããåäžãããŸãã
Web Share Target APIïŒã·ãŒã ã¬ã¹ãªå ±æã®ããã®ã¢ããªç»é²ãå¯èœã«
Web Share Target APIã¯ãããã°ã¬ãã·ããŠã§ãã¢ããªïŒPWAïŒãå ±æã¿ãŒã²ãããšããŠç»é²ã§ããããã«ããããšã§ããŠãŒã¶ãŒã®ããã€ã¹äžã§ç¬¬äžçŽã®åžæ°ã«ãªãåãäžããŸããããã«ããããŠãŒã¶ãŒãä»ã®ã¢ããªããŠã§ããµã€ãããã³ã³ãã³ããå ±æããããšãããšãå ±æã·ãŒãã«ããªãã®PWAããªãã·ã§ã³ãšããŠè¡šç€ºãããã·ãŒã ã¬ã¹ã§çµ±åãããå ±æäœéšãæäŸã§ããŸãã
Web Share Target APIãçè§£ãã
åŸæ¥ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãã€ãã£ãã®å ±æã¡ã«ããºã ããããçšåºŠéé¢ãããŠããŸããããŠã§ãã¢ããªããã€ãã£ãã®å ±æãã€ã¢ãã°ãããªã¬ãŒã§ããWeb Share APIã¯ã倧ããªäžæ©ã§ãããããããWeb Share Target APIã¯ãããããã«äžæ©é²ãããŠã§ãã¢ããªãå ±æãããã³ã³ãã³ããçŽæ¥*åä¿¡*ã§ããããã«ããŸãã
ãã®ããã«èããŠã¿ãŠãã ãããWeb Share APIã¯ãŠã§ãã¢ããªãå ±æãéå§ãããããªãã®ã§ãWeb Share Target APIã¯ãŠã§ãã¢ããªãå ±æã®å®å ã«ãªããããªãã®ã§ãã
Web Share Target APIã䜿çšããçç±
- ãŠãŒã¶ãŒäœéšã®åäžïŒ ãŠãŒã¶ãŒã«å¯ŸããŠãããçµ±åããããã€ãã£ãã©ã€ã¯ãªå ±æäœéšãæäŸããŸãããªã³ã¯ãã³ããŒïŒããŒã¹ãããããã³ã³ãã³ããæåã§ã€ã³ããŒãããããã代ããã«ããŠãŒã¶ãŒã¯ã¯ã³ã¿ããã§ããªãã®PWAã«çŽæ¥å ±æã§ããŸãã
- ã¢ããªãšã³ã²ãŒãžã¡ã³ãã®å¢å ïŒ ããªãã®PWAãããã¢ã¯ã»ã¹ãããã䟿å©ã«ãããŠãŒã¶ãŒãããé »ç¹ã«å©çšããããã«ä¿ããŸãããŠãŒã¶ãŒãã¡ã¢åãPWAã«çŽæ¥ãªã³ã¯ãå ±æããããåçç·šéPWAã«ç»åãå ±æãããããå Žé¢ãæ³åããŠã¿ãŠãã ããã
- çºèŠæ§ã®åäžïŒ ãŠãŒã¶ãŒãããªãã®PWAãå®è¡å¯èœãªå ±æãªãã·ã§ã³ãšããŠçºèŠããã®ãå©ããæ°èŠãŠãŒã¶ãŒç²åŸã«ã€ãªããå¯èœæ§ããããŸãã
- ã¯ãã¹ãã©ãããã©ãŒã äºææ§ïŒ Web Share Target APIã¯ãããŸããŸãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã©ãŠã¶ã§åäœããããã«èšèšãããŠããããã¹ãŠã®ãŠãŒã¶ãŒã«äžè²«ããå ±æäœéšãæäŸããŸãããã©ãããã©ãŒã åºæã®å ±æã¡ã«ããºã ã®è€éããæœè±¡åããŸãã
Web Share Target APIã®å®è£ æ¹æ³
Web Share Target APIãå®è£ ããã«ã¯ãPWAã®ãããã§ã¹ããã¡ã€ã«ã倿Žããåä¿¡ããå ±æããŒã¿ãåŠçããããã®ãµãŒãã¹ã¯ãŒã«ãŒãäœæããå¿ èŠããããŸãã
1. ãããã§ã¹ããã¡ã€ã«ïŒmanifest.jsonïŒã®å€æŽ
`manifest.json`ãã¡ã€ã«ã¯ãããããPWAã®å¿èéšã§ããã¢ããªã±ãŒã·ã§ã³ã«é¢ããã¡ã¿ããŒã¿ïŒååãã¢ã€ã³ã³ããããŠãã®å Žåã¯å ±æã¿ãŒã²ããæ©èœïŒãå«ãŸããŠããŸãããããã§ã¹ãã«`share_target`ããããã£ã远å ããå¿ èŠããããŸãã
以äžã«åºæ¬çãªäŸã瀺ããŸãïŒ
{
"name": "My Awesome PWA",
"short_name": "Awesome PWA",
"icons": [
{
"src": "/images/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
}
],
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#000000",
"share_target": {
"action": "/share-target/",
"method": "POST",
"enctype": "multipart/form-data",
"params": {
"title": "title",
"text": "text",
"url": "url",
"files": [
{
"name": "file",
"accept": ["image/*", "video/*"]
}
]
}
}
}
`share_target`ããããã£ã®å èš³ã説æããŸãïŒ
- `action`ïŒ å ±æããŒã¿ãåŠçããURLã§ããããã¯ãåä¿¡ããŒã¿ãåŠçããæºåãæŽã£ãPWAå ã®ããŒãžã§ããã¹ãã§ãããã®ããŒãžã¯éåžžãäœãçŽæ¥ã¬ã³ããªã³ã°ããã代ããã«JavaScriptã䜿çšããŠããŒã¿ãåŠçãããŠãŒã¶ãŒãã¢ããªå ã®é©åãªãã¥ãŒã«ãªãã€ã¬ã¯ãããå¯èœæ§ããããŸããäŸïŒ`/share-target/`
- `method`ïŒ ããŒã¿ãéä¿¡ããããã«äœ¿çšãããHTTPã¡ãœããã§ããç¹ã«ãã¡ã€ã«ãæ±ãå Žåã¯`POST`ãäžè¬çã«æšå¥šãããŸãã
- `enctype`ïŒ ããŒã¿ã®ãšã³ã³ãŒãã£ã³ã°ã¿ã€ãã§ãããã¡ã€ã«ãæ±ãå Žåã¯`multipart/form-data`ãé©ããŠãããåçŽãªããã¹ãããŒã¹ã®ããŒã¿ã«ã¯`application/x-www-form-urlencoded`ã䜿çšã§ããŸãã
- `params`ïŒ å ±æããŒã¿ããã©ãŒã ãã£ãŒã«ãã«ã©ã®ããã«ãããã³ã°ãããããå®çŸ©ããŸãã
- `title`ïŒ å ±æãããã¿ã€ãã«ãåä¿¡ãããã©ãŒã ãã£ãŒã«ãã®ååã
- `text`ïŒ å ±æãããããã¹ããåä¿¡ãããã©ãŒã ãã£ãŒã«ãã®ååã
- `url`ïŒ å ±æãããURLãåä¿¡ãããã©ãŒã ãã£ãŒã«ãã®ååã
- `files`ïŒ åã ããã¡ã€ã«ãã£ãŒã«ããå®çŸ©ãããªããžã§ã¯ãã®é åã
- `name`ïŒ ãã¡ã€ã«ã®ãã©ãŒã ãã£ãŒã«ãã®ååã
- `accept`ïŒ ãã¡ã€ã«ãã£ãŒã«ããåãå ¥ããMIMEã¿ã€ãã®é åã
`application/x-www-form-urlencoded`ã䜿çšãã代æ¿ã®`params`èšå®ïŒ
{
"action": "/share-target/",
"method": "GET",
"params": {
"title": "shared_title",
"text": "shared_text",
"url": "shared_url"
}
}
ãã®èšå®ã§ã¯ãå ±æããŒã¿ã¯ã¯ãšãªãã©ã¡ãŒã¿ãšããŠ`action` URLã«è¿œå ãããŸãïŒäŸïŒ`/share-target/?shared_title=...&shared_text=...&shared_url=...`ïŒããã®ã¢ãããŒãã¯ãäž»ã«ããã¹ãããŒã¹ã®ããŒã¿ãæ±ãåçŽãªã·ããªãªã«é©ããŠããŸãã
2. ãµãŒãã¹ã¯ãŒã«ãŒã§å ±æããŒã¿ãåŠçãã
ãµãŒãã¹ã¯ãŒã«ãŒã¯ããŠã§ãããŒãžãšã¯å¥ã«ããã¯ã°ã©ãŠã³ãã§å®è¡ãããã¹ã¯ãªããã§ãããããã¯ãŒã¯ãªã¯ãšã¹ããååãããããªãœãŒã¹ããã£ãã·ã¥ãããããããŠãã®å Žåã¯åä¿¡ããå ±æããŒã¿ãåŠçãããã§ããŸãã
ãµãŒãã¹ã¯ãŒã«ãŒã§`fetch`ã€ãã³ãããªãã¹ã³ãããªã¯ãšã¹ãURLããããã§ã¹ãã§å®çŸ©ããã`action` URLãšäžèŽãããã©ããã確èªããå¿ èŠããããŸããäžèŽããå Žåãå ±æããŒã¿ãåŠçãããŠãŒã¶ãŒãPWAå ã®é©åãªãã¥ãŒã«ãªãã€ã¬ã¯ãã§ããŸãã
以äžã¯ãµãŒãã¹ã¯ãŒã«ãŒã®ã³ãŒãã¹ããããã®äŸã§ãïŒservice-worker.jsïŒïŒ
self.addEventListener('fetch', event => {
if (event.request.method === 'POST' && event.request.url.includes('/share-target/')) {
event.respondWith(async function() {
const formData = await event.request.formData();
const title = formData.get('title');
const text = formData.get('text');
const url = formData.get('url');
const file = formData.get('file');
// å
±æããŒã¿ãåŠçããïŒäŸïŒããŒã¿ããŒã¹ã«ä¿åãUIã«è¡šç€ºïŒ
console.log('Shared data:', { title, text, url, file });
// äŸïŒå
±æããŒã¿ãlocalStorageã«ä¿åããŠãªãã€ã¬ã¯ããã
const shareData = {
title: title || '',
text: text || '',
url: url || '',
file: file ? file.name : '' // ç°¡åã«ããããã«ãã¡ã€ã«åã ããä¿å
};
localStorage.setItem('sharedData', JSON.stringify(shareData));
// å
±æã³ã³ãã³ãã衚瀺ããããã«ç¹å®ã®ããŒãžã«ãªãã€ã¬ã¯ããã
return Response.redirect('/shared-content/', 303);
//è€éãªãã¡ã€ã«åŠçã®ããã®ä»£æ¿æ¡ïŒ
//if (file) {
// // ãã¡ã€ã«ãBlobã«å€æããIndexedDBã«ä¿åãããããµãŒããŒã«éä¿¡ããã
// const blob = await file.blob();
// // ... (IndexedDBã®ã³ãŒããŸãã¯ã¢ããããŒããšã³ããã€ã³ããžã®fetch)
//}
}());
}
});
ãµãŒãã¹ã¯ãŒã«ãŒå®è£ ã«ãããéèŠãªèæ ®äºé ïŒ
- ãã¡ã€ã«åŠçïŒ äžèšã®äŸã§ã¯ãå ±æãã¡ã€ã«ã«ã¢ã¯ã»ã¹ããåºæ¬çãªæ¹æ³ãæäŸããŠããŸããããè€éãªã·ããªãªã§ã¯ããã¡ã€ã«ãBlobã«å€æããIndexedDBã«ä¿åãããããµãŒããŒã«ã¢ããããŒãããå¿ èŠããããŸããå ±æããããã¡ã€ã«ã®ãµã€ãºãèæ ®ããé©åãªãšã©ãŒåŠçãšé²æã€ã³ãžã±ãŒã¿ãŒãå®è£ ããŠãã ããã
- ãšã©ãŒåŠçïŒ å ±æããŒã¿ãæ¬ èœããŠãããç¡å¹ãªå Žåã«é©åã«å¯Ÿå¿ããããã«ãå ç¢ãªãšã©ãŒåŠçãå®è£ ããŠãã ããããŠãŒã¶ãŒãã¬ã³ããªãŒãªãšã©ãŒã¡ãã»ãŒãžã衚瀺ããåé¡ã®è§£æ±ºæ¹æ³ã«é¢ããã¬ã€ãã³ã¹ãæäŸããŠãã ããã
- ã»ãã¥ãªãã£ïŒ å ±æããŒã¿ãæ±ãéã«ã¯ãã»ãã¥ãªãã£ãžã®åœ±é¿ã«æ³šæããŠãã ãããã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒè匱æ§ãé²ãããã«ãŠãŒã¶ãŒå ¥åããµãã¿ã€ãºããŠãã ãããæªæã®ããã¢ããããŒããé²ãããã«ãã¡ã€ã«ã¿ã€ããæ€èšŒããŠãã ããã
- ãŠãŒã¶ãŒäœéšïŒ ãŠãŒã¶ãŒãPWAã«ã³ã³ãã³ããå ±æããåŸãæç¢ºãªãã£ãŒãããã¯ãæäŸããŠãã ãããæåã¡ãã»ãŒãžã衚瀺ããããå ±æãããã³ã³ãã³ãã衚瀺ãŸãã¯ç·šéã§ããããŒãžã«ãªãã€ã¬ã¯ãããŠãã ããã
- ããã¯ã°ã©ãŠã³ãåŠçïŒ å€§ããªãã¡ã€ã«ãããè€éãªåŠçã«ã¯ãBackground Fetch APIã䜿çšããŠã¡ã€ã³ã¹ã¬ããããããã¯ããªãããã«ããã¹ã ãŒãºãªãŠãŒã¶ãŒäœéšã確ä¿ããããšãæ€èšããŠãã ããã
3. ãµãŒãã¹ã¯ãŒã«ãŒã®ç»é²
ã¡ã€ã³ã®JavaScriptãã¡ã€ã«ã§ãµãŒãã¹ã¯ãŒã«ãŒãæ£ããç»é²ãããŠããããšã確èªããŠãã ãããããã«ã¯éåžžããã©ãŠã¶ããµãŒãã¹ã¯ãŒã«ãŒããµããŒãããŠãããã確èªãã`service-worker.js`ãã¡ã€ã«ãç»é²ããããšãå«ãŸããŸãã
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
.then(registration => {
console.log('Service Worker registered with scope:', registration.scope);
})
.catch(error => {
console.error('Service Worker registration failed:', error);
});
}
4. å ±æã³ã³ãã³ãã®è¡šç€º
äžèšã®äŸã§ã¯ããµãŒãã¹ã¯ãŒã«ãŒã¯`/shared-content/`ã«ãªãã€ã¬ã¯ãããŸãããã®ããŒãžãäœæïŒãŸãã¯ãªãã€ã¬ã¯ãURLãé©å®èª¿æŽïŒããå ±æã³ã³ãã³ããååŸããŠè¡šç€ºããããžãã¯ãå®è£ ããå¿ èŠããããŸããããã«ã¯éåžžã`localStorage`ããããŒã¿ãååŸããïŒäŸã®ããã«ïŒããããŒã¿ãæ°žç¶åããŠããå Žåã¯ããŒã¿ããŒã¹ããååŸããããšãå«ãŸããŸãã
HTMLã§å ±æã³ã³ãã³ãã衚瀺ããç°¡åãªäŸã以äžã«ç€ºããŸãïŒ
<!DOCTYPE html>
<html>
<head>
<title>Shared Content</title>
</head>
<body>
<h1>Shared Content</h1>
<div id="content">
<p>Title: <span id="title"></span></p>
<p>Text: <span id="text"></span></p>
<p>URL: <a id="url" href="#"></a></p>
<p>File: <span id="file"></span></p>
</div>
<script>
const sharedDataString = localStorage.getItem('sharedData');
if (sharedDataString) {
const sharedData = JSON.parse(sharedDataString);
document.getElementById('title').textContent = sharedData.title;
document.getElementById('text').textContent = sharedData.text;
document.getElementById('url').href = sharedData.url;
document.getElementById('url').textContent = sharedData.url;
document.getElementById('file').textContent = sharedData.file;
} else {
document.getElementById('content').innerHTML = '<p>No shared content found.</p>';
}
</script>
</body>
</html>
é«åºŠãªèæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
- æ©èœæ€åºïŒ Web Share Target APIã䜿çšããåã«ããŠãŒã¶ãŒã®ãã©ãŠã¶ããµããŒãããŠããããåžžã«ç¢ºèªããŠãã ããã以äžã®ã³ãŒãã¹ããããã䜿çšããŠãµããŒããæ€åºã§ããŸãïŒ
if ('shareTarget' in navigator) {
// Web Share Target APIã¯ãµããŒããããŠããŸã
} else {
// Web Share Target APIã¯ãµããŒããããŠããŸãã
}
Web Share Target APIã®æŽ»çšäŸ
- ã¡ã¢ã¢ããªïŒ ãŠãŒã¶ãŒã¯ããã¹ãã®ã¹ããããããŠã§ãããŒãžãçŽæ¥ã¡ã¢ã¢ããªPWAã«å ±æããŠãæ å ±ãçŽ æ©ãä¿åã§ããŸããäŸãã°ããããžã§ã¯ãã®ç ç©¶ãããŠããåŠçã¯ãé¢é£ããèšäºãçŽæ¥ã¡ã¢ã¢ããªã«å ±æããŠåŸã§ç¢ºèªã§ããŸãã
- åçç·šéã¢ããªïŒ ãŠãŒã¶ãŒã¯ã®ã£ã©ãªãŒããçŽæ¥ç»åãåçç·šéPWAã«å ±æããŠãè£æ£ãä¿®æ£ãè¡ããŸããåçå®¶ã¯ã¯ã©ãŠãã¹ãã¬ãŒãžãµãŒãã¹ãããæ°ã«å ¥ãã®ç·šéã¢ããªã«åçãçŽ æ©ãå ±æããŠåŸåŠçãè¡ããŸãã
- ãœãŒã·ã£ã«ã¡ãã£ã¢ã¢ããªïŒ ãŠãŒã¶ãŒã¯ä»ã®ãŠã§ããµã€ããã¢ããªããã³ã³ãã³ããçŽæ¥ãœãŒã·ã£ã«ã¡ãã£ã¢PWAã«å ±æããŠããã©ãã¯ãŒãšå ±æã§ããŸããã€ã³ãã«ãšã³ãµãŒã¯ã話é¡ã®èšäºãçŽæ¥ãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ã«å ±æããŠããªãŒãã£ãšã³ã¹ãšãšã³ã²ãŒãžã§ããŸãã
- çç£æ§åäžã¢ããªïŒ ãã¡ã€ã«ã¹ãã¬ãŒãžã¢ããªãã¡ãŒã«ã¯ã©ã€ã¢ã³ãããããã¥ã¡ã³ããã¹ãã¬ããã·ãŒãããã¬ãŒã³ããŒã·ã§ã³ãçŽæ¥çç£æ§åäžPWAã«å ±æããŠãç·šéãå ±åäœæ¥ãè¡ããŸãããããžã§ã¯ããããŒãžã£ãŒã¯ããªã¢ã«ã¿ã€ã ã®ãã£ãŒãããã¯ã®ããã«ããã¥ã¡ã³ããããŒã ã³ã©ãã¬ãŒã·ã§ã³PWAã«å ±æã§ããŸãã
- Eã³ããŒã¹ã¢ããªïŒ ãŠãŒã¶ãŒã¯ä»ã®ãŠã§ããµã€ãããååããŒãžãçŽæ¥Eã³ããŒã¹PWAã«å ±æããŠããŠã£ãã·ã¥ãªã¹ãã«è¿œå ããããå人ãšå ±æãããã§ããŸããè²·ãç©å®¢ã¯ãæ°ã«å ¥ã£ãååãå人ãšå ±æããŠæèŠãæ±ããããšãã§ããŸãã
äžè¬çãªåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
- PWAãå
±æã·ãŒãã«è¡šç€ºãããªãïŒ
- `manifest.json`ãã¡ã€ã«ã`share_target`ããããã£ã§æ£ããèšå®ãããŠããããšã確èªããŠãã ããã
- ãµãŒãã¹ã¯ãŒã«ãŒãæ£ããç»é²ãããå®è¡ãããŠããããšã確èªããŠãã ããã
- ãµãŒãã¹ã¯ãŒã«ãŒããããã§ã¹ããã¡ã€ã«ã«é¢é£ãããšã©ãŒãã³ã³ãœãŒã«ã«ãªãã確èªããŠãã ããã
- ãã©ãŠã¶ã®ãã£ãã·ã¥ãã¯ãªã¢ããŠå詊è¡ããŠãã ããã
- å
±æããŒã¿ãåä¿¡ãããªãïŒ
- `manifest.json`ãã¡ã€ã«ã®`action` URLãããµãŒãã¹ã¯ãŒã«ãŒããªãã¹ã³ããŠããURLãšäžèŽããããšã確èªããŠãã ããã
- ãã©ãŠã¶ã®éçºè ããŒã«ã§ãããã¯ãŒã¯ãªã¯ãšã¹ããæ€æ»ããéä¿¡ãããŠããããŒã¿ã確èªããŠãã ããã
- `manifest.json`ãã¡ã€ã«ã®ãã©ãŒã ãã£ãŒã«ãåãå確èªãããµãŒãã¹ã¯ãŒã«ãŒã§ããŒã¿ã«ã¢ã¯ã»ã¹ããããã«äœ¿çšãããŠããååãšäžèŽããããšã確èªããŠãã ããã
- ãã¡ã€ã«å
±æã®åé¡ïŒ
- ãã¡ã€ã«ãå ±æããéã¯ã`manifest.json`ãã¡ã€ã«ã®`enctype`屿§ã`multipart/form-data`ã«èšå®ãããŠããããšã確èªããŠãã ããã
- `manifest.json`ãã¡ã€ã«ã®`accept`屿§ã確èªãããµããŒãããããã¡ã€ã«ã®MIMEã¿ã€ããå«ãŸããŠããããšã確èªããŠãã ããã
- ãã¡ã€ã«ãµã€ãºã®å¶éã«æ³šæãã倧ããªãã¡ã€ã«ã«å¯ŸããŠé©åãªãšã©ãŒåŠçãå®è£ ããŠãã ããã
ãŠã§ãå ±æã®æªæ¥
Web Share Target APIã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ãšãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã®éã®ã®ã£ãããåããããã®éèŠãªäžæ©ã§ããPWAãé²åãç¶ãããŠãŒã¶ãŒã®ã¯ãŒã¯ãããŒã«ãŸããŸãçµ±åãããã«ã€ããŠããŠã§ãã¢ããªãšã®éã§ã³ã³ãã³ããã·ãŒã ã¬ã¹ã«å ±æããèœåã¯ãŸããŸãéèŠã«ãªãã§ãããã
ãŠã§ãå ±æã®æªæ¥ã«ã¯ã以äžã®ãããªãã®ãå«ãŸããã§ãããïŒ
- ã»ãã¥ãªãã£ã®åŒ·åïŒ æªæã®ããã³ã³ãã³ãããä¿è·ããã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒè匱æ§ãé²ãããã®ãããå ç¢ãªã»ãã¥ãªãã£å¯Ÿçã
- ãã¡ã€ã«åŠçã®æ¹åïŒ å€§ããªãã¡ã€ã«ãè€éãªããŒã¿æ§é ãæ±ãããã®ãããå¹ççã§åçåãããæ¹æ³ã
- ãã€ãã£ãAPIãšã®ããæ·±ãçµ±åïŒ ããæ²¡å ¥æã®ãããã€ãã£ãã©ã€ã¯ãªå ±æäœéšãæäŸããããã®ããã€ãã£ãããã€ã¹æ©èœãAPIãšã®ã·ãŒã ã¬ã¹ãªçµ±åã
- æšæºåïŒ Web Share Target APIãæšæºåããç°ãªããã©ãŠã¶ããã©ãããã©ãŒã éã§ã®äžè²«ããå®è£ ãä¿èšŒããããã®ç¶ç¶çãªåãçµã¿ã
çµè«
Web Share Target APIã¯ããŠãŒã¶ãŒäœéšãåäžãããããã°ã¬ãã·ããŠã§ãã¢ããªãžã®ãšã³ã²ãŒãžã¡ã³ããé«ããããã®åŒ·åãªããŒã«ã§ããPWAãå ±æã¿ãŒã²ãããšããŠç»é²ã§ããããã«ããããšã§ããŠãŒã¶ãŒã«ã·ãŒã ã¬ã¹ã§çµ±åãããå ±æäœéšãæäŸããã¢ããªãããã¢ã¯ã»ã¹ããããã䟿å©ã§ãçºèŠããããããããšãã§ããŸãã
ãã®ã¬ã€ãã§æŠèª¬ããæé ã«åŸãããšã§ãPWAã«Web Share Target APIãæ£åžžã«å®è£ ãããŠã§ãå ±æã®å¯èœæ§ãæå€§éã«åŒãåºãããšãã§ããŸãã
PWAããã¹ãŠã®ãŠãŒã¶ãŒã«ã·ãŒã ã¬ã¹ã§æ¥œããå ±æäœéšãæäŸã§ãããããWeb Share Target APIãå®è£ ããéã«ã¯ããŠãŒã¶ãŒäœéšãã»ãã¥ãªãã£ãããã©ãŒãã³ã¹ãåªå ããããšãå¿ããªãã§ãã ããã